// 2803.[类似猴子爬山递推dfs递归] 检查烂苹果
// https://oj.rnd.huawei.com/problems/2803/details
//猴子爬山n级台阶，一步跨1级或3级
//正在检查一大堆苹果的好坏。总共需要检查 n 个苹果。
//每次只能拿起 1 或 2 个苹果进行检查。你有多少种不同的方法可以检查完毕呢？
//输入 2
//输出 2
//输入：n = 2
//输出：2：有两种方法可以检查完。
// 2次：1 个 + 1 个
// 1次：2 个
//输入 3
//输出 3
//输入：n = 3
//输出：3
//解释：有三种方法可以检查完毕。
// 3次：1 个 + 1 个 + 1 个
// 2次：1 个 + 2 个
// 2次：2 个 + 1 个

#include <bits/stdc++.h>
using namespace std;

#define DEBUG
#ifdef DEBUG
#define PF(...) printf(__VA_ARGS__)
#else
#define PF(...)
#endif

class Solution {
  void dfs(int n, int i, int& res) {
    if (i == n) {
      res++;
      return;
    }
    if (i > n) {
      return;
    }
    dfs(n, i + 1, res);
    dfs(n, i + 2, res);
  }

 public:
  int checkApples(int n) {
    int res = 0;
    dfs(n, 1, res);
    return res;
  }
};

int monkey(void) {
  int k, n;
  long f[1000];
  printf("n=");
  scanf("%d", &n);
  f[1] = 1;
  f[2] = 1;
  f[3] = 2;
  for (k = 4; k <= n; k++) f[k] = f[k - 1] + f[k - 3];
  printf("%d = %d\n", n, f[n]);
  return 0;
}

int apple(void) {
  int k, n;
  long f[1000];
  printf("n=");
  scanf("%d", &n);
  f[1] = 1;
  f[2] = 2;
  for (k = 3; k <= n; k++) f[k] = f[k - 1] + f[k - 2];
  printf("%d = %d\n", n, f[n]);
  return 0;
}

int main() {
  int num = 0;
  cin >> num;
  Solution sol;
  int n = sol.checkApples(3);
  printf("%d\n", n);
  return 0;
}
